#
#
#  R E A D   T H I S
#
#  See the inference rules below (the section marked "Inference rules") to
#  see if any of them cover the rule that you want performed for your file.
#  The inference rules should cover most of the cases.  If they don't, try
#  to add a new inference rule rather than adding a special-case rule for
#  your file.
#

#
# Special rules for splitting out .w files
#

# wininet.h and wininetp.h

$(O)\wininet.x $(O)\wininetp.x: wininet.w
    hsplit -e -o $(O)\wininet.x $(O)\wininetp.x $?

$(O)\wininet.h: $(O)\wininet.x
    wcshdr < $? > $@

$(O)\wininetp.h: $(O)\wininetp.x
    wcshdr < $? > $@


$(O)\winhttp.h $(O)\winhttpi.h: winhttp.w
    hsplit -o $(O)\winhttp.h $(O)\winhttpi.h $?


#
# Non-obvious Dependencies
#


#
# Inference rules.  These help build whatever is in the NTTARGETFILES and
# NTTARGETFILE0 lists.  Most of these simply copy files.
#

.SUFFIXES:.h .w .hpp .tlb .dlg .c .cpp


{}.w{$O}.h:
    hsplit -e -o $(O)\$(?R).x $(O)\$(?R)p.x $?
    wcshdr < $(O)\$(?R).x > $*.h

{}.w{}.h:
    hsplit -e -o $(O)\$(?R).x $(O)\$(?R)p.x $?
    wcshdr < $(O)\$(?R).x > $(O)\$*.h

#
#   mshtml.h has special funkiness:
#
#       mshtml.idl -> obj\mshtml.h -[copy]-> sdk\inc\mshtmlc.h
#                     obj\mshtml.h -[sed]--> sdk\inc\mshtml.h
#
#   obj\mshtml.h is generated by MIDL and contains both C and C++ support.
#   splthdr.sed removes the C support; the result goes to sdk\inc\mshtml.h.
#   The C version goes to sdk\inc\mshtmlc.h.

$(O)\mshtmlcpp.h: $(O)\mshtml.h
    type << > $@
#if !defined(__cplusplus) || defined(CINTERFACE)
// Include the full header file that works for C
#include "mshtmlc.h"
#else
<<
    perl splthdr.pl < $? >> $@
    type << >> $@
#endif /* !defined(__cplusplus) || defined(CINTERFACE) */
<<

